package com.netmi.myjectpack.startup;

import android.content.Context;


import android.os.Build;

import androidx.annotation.RequiresApi;
import androidx.startup.Initializer;
import androidx.work.Configuration;
import androidx.work.WorkManager;

import java.util.ArrayList;
import java.util.List;

import io.realm.Realm;
import io.realm.RealmConfiguration;
import io.realm.annotations.RealmClass;

import static java.util.Collections.emptyList;

/**
 * 类描述：
 * 创建人：tgw
 * 创建时间：2020/8/26
 * 修改备注：
 * <p>
 * 参考：https://developer.android.google.cn/topic/libraries/app-startup#java
 * https://www.jianshu.com/p/0bec0e8a1879
 */
public class RealmManagerInitializer implements Initializer<Realm> {

    /**
     * 之前是每次都要在application中初始化，一旦库多则会影响启动速度
     */
    @Override
    public Realm create(Context context) {
        Realm.init(context);
        // The RealmConfiguration is created using the builder pattern.
        // The Realm file will be located in Context.getFilesDir() with name "myRealm.realm"
        RealmConfiguration config = new RealmConfiguration.Builder()
                .name("myRealm.realm")
                .deleteRealmIfMigrationNeeded()
                .build();
        Realm.setDefaultConfiguration(config);
        // Use the config（自定义的方法）
        Realm realm = Realm.getInstance(config);
        return realm;
    }

    @Override
    public List<Class<? extends Initializer<?>>> dependencies() {
        // No dependencies on other libraries.
        //如果有 其他的库必须在 realm之前初始化 ，
        // 方法一 、则创建list集合添加最后返回集合，
        // 方法二 在AndroidManifest.xml文件中变换顺序即可
        List<Class<? extends Initializer<?>>> list = new ArrayList();
        list.add(RealmManagerInitializer.class);

        //如果只有一个库初始化，返回null集合即可，如下
        return emptyList();
    }

}
